Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - [VB.NET] Utilizzo delle Interfacce
Forum - C# / VB.NET - [VB.NET] Utilizzo delle Interfacce

Avatar
Dedalux (Member)
Pro


Messaggi: 103
Iscritto: 15/12/2010

Segnala al moderatore
Postato alle 13:42
Lunedì, 14/02/2011
Lo so, quello che sto per dire è abbastanza vergognoso, ma ahimè, è la verità.
(Ma per fortuna si può imparare.. ^^)
Non avendo un'idea molto chiara di come si utilizzino le interfacce, mi vien da dire che non le so usare.
Mi spiego meglio: fin'ora ho sempre implementato interfacce di cui avevo sempre visto esempi di utilizzo, come ad esempio INotifyPropertyChanged, INotifyCollectionChanged, IComparer/(Of T), IComparable/(Of T), e via dicendo.
Le più comuni insomma...

Nella mia applicazione in MVVM ho bisogno di mostrare una finestra di modifica in cui il datacontext è un'istanza di un Model, ed ho la necessità di poter confermare o annullare le modifiche effettuate sull'istanza della classe.
Non essendo sicuro della correttezza dell'approccio che avevo in mente ho chiesto, e mi è stato consigliato l'utilizzo dell'interfaccia IRevertibleChangeTracking (http://msdn.microsoft.com/it-it/library/system.componentmo ....

Però non ho idea di come utilizzarla.. 8-|
Quello che voglio dire è: c'è uno standard (più o meno variabile) di utilizzo per le varie interfacce, o è a completa discrezione del programmatore.

Perchè per quanto mi riguarda, io farei come sto facendo ora con una specie workaround, se posso chiamarlo così: clono la classe da modificare, e se la modifica è confermata, sostituisco i valori della classe originaria con quelli del suo clone.
Altra idea che mi viene mentre scrivo è creare un Dictionay(NomeProprietà, Valore) per i valori precedenti alla modifica, da cui poi attingere in caso di annullamento.
Ma non mi sento per nulla sicuro.

Mi aiutereste a chiarirmi le idee?
Grazie infinite =)

Ultima modifica effettuata da Dedalux il 14/02/2011 alle 13:46
PM
Avatar
HeDo (Founder Member)
Guru^2


Messaggi: 2765
Iscritto: 21/09/2007

Up
0
Down
V
Segnala al moderatore
Postato alle 13:50
Lunedì, 14/02/2011
Purtroppo l'MVVM non è standard, che ti porta ad avere N soluzioni possibili.
Alcune soluzioni pagano subito, altre pagano dopo, in generale dipende tutto dalla grandezza del progetto e dalla sua complessità :)

Ultima modifica effettuata da HeDo il 14/02/2011 alle 13:51
Che MVVM non sia uno standard è chiarissimo, anche per definizione, dato che è un pattern. Ho citato MVVM solo per darvi l'idea del contesto in cui mi trovo. Il mio problema è capire, ora che "so" di dover implementare IRevertible... nella mia classe, per poter supportare un'annullamento delle modif - Dedalux - 14/02/11 14:11
(A quanto pare il tasto per le risposte è sparito quindi commento...) per poter supportare un'annullamento delle modifiche, come devo procedere, qual'è la logica da seguire... è questo che vorrei capire - Dedalux - 14/02/11 14:12
PM
Avatar
dedalux (Normal User)
Pro


Messaggi: 155
Iscritto: 14/02/2009

Up
0
Down
V
Segnala al moderatore
Postato alle 15:43
Lunedì, 14/02/2011
Scrivo dall'account User, perchè quello Member non mi mostra il pulsante di risposta...

Io vorrei capire, quando si implementa un'interfaccia, come si procede..
Lo so che la domanda è troppo generica, ma è proprio quello che ho bisogno di sapere.
Quale logica va seguita, in che ordine di idee bisogna porsi, ci sono delle "regole di correttezza del codice"

Prova a leggere la guida di Totem ci dovrebbe essere la sezione che spiega le Interfacce - Ultimo - 14/02/11 19:00
PM
Avatar
netarrow (Admin)
Guru^2


Messaggi: 2502
Iscritto: 12/05/2004

Up
0
Down
V
Segnala al moderatore
Postato alle 22:14
Lunedì, 14/02/2011
Lo scopo per cui esistono le interfacce è proprio quello di non darti alcuna logica.

L'unico limite è la firma dei metodi, che faranno da contratto fra la tua implementazione (libera) e le chiamate del codice client che dovranno ovviamente avvenire tramite dei metodi di cui sai lo stretto indispensabile: il nome, i parametri e il ritorno.

Cosa c'è dentro la particolare implementazione al client non gli deve interessare o non avrebbero senso.

Grazie Netarrow per la risposta. Comunque fin qua c'ero, mi scuso se non sono riuscito a trasmettervi il mio problema in modo chiaro. Quello che mi chiedo è: data un'interfaccia, a parte il nome e l'obbiettivo, che sono le uniche cose che dicono cosa ci sia da fare - Dedalux - 15/02/11 00:06
il programmatore non ha alcun aiuto diretto dalle interfacce, in quanto deve comunque creare da zero la procedura. L'unico aiuto che ne riceve è una sorta di identificazione delle funzionalità di tale classe (utilie si in alcuni casi, come verificare se è disponibile una funzionalità e cose simili) - Dedalux - 15/02/11 00:09
il mio problema era proprio questo, se so che devo poter annullare delle modifiche ad un'istanza, e trovo un'interfaccia di nome ICiccio che espone dei membri che sembrano fare al caso mio, come devo ragionare per utilizzarla in modo corretto? - Dedalux - 15/02/11 00:12
Per esempio in questo momento non sarei nemmeno del tutto convinto che l'interfaccia vada implementata dal Model e non da un ipotetico EditViewModel. l'unica cosa che riesco a pensare è l'inserimento di quello che ho chiamato un "workaround" all'interno dei metodi esposti dall'interfaccia. - Dedalux - 15/02/11 00:16
E' questo il modo corretto di procedere? - Dedalux - 15/02/11 00:16
PM